Variadic Tuple Types
1つ目の変更
タプルのspreadがgenericになった
code:ts
function tail<T extends any[]>(arr: readonly any, ...T) { return rest;
}
const r1 = tail(myTuple);
// ^ = const r2: [2, 3, 4, ...string[]]
2つ目の変更
rest elementsがタプル内のどこでも使えるようになった
code:ts
これが型でできるようになった
従来は末尾でしかできなかった
concatの型定義もこのとおり
code:ts
type Arr = readonly any[];
function concat<T extends Arr, U extends Arr>(arr1: T, arr2: U): ...T, ...U { }
code:ts
type Arr = readonly unknown[];
function partialCall<T extends Arr, U extends Arr, R>(
...headArgs: T
) {
return (...tailArgs: U) => f(...headArgs, ...tailArgs);
}
部分適用の型もしっかり通る